package com.juzi.arraylist;

import java.util.ArrayList;
import java.util.Scanner;

/*
需求
后台程序需要存储如上学生信息并展示，然后要提供按照学号搜索学生信息的功能。
分析
定义Student类，定义ArrayList集合存储如上学生对象信息，并遍历展示出来。
提供一个方法，可以接收ArrayList集合，和要搜索的学号，返回搜索到的学生对象信息，并展示。
使用死循环，让用户可以不停的搜索。

 */
public class ArrayTest6 {
    public static void main(String[] args) {
        //1、定义学生类
        //2、创建集合存储学生对象，创建学生对象封装学生信息，把学生信息添加到集合中
        ArrayList<Student> students= new ArrayList<>();
        students.add(new Student("2019010101","桔子",22,"设计一班"));
        students.add(new Student("2019020101","耳朵",22,"软工二班"));
        students.add(new Student("2019030101","甜甜",22,"护理三班"));
        students.add(new Student("2019040101","熊🐻",22,"中药四班"));
        students.add(new Student("2019050101","夏天",22,"设计五班"));
        //3、遍历学生信息，展示
        System.out.println("学号\t\t\t姓名\t年龄\t 班级");
        for (int i = 0; i < students.size(); i++) {
            Student s = students.get(i);
            System.out.println(s.getsNumber()+"\t" + s.getsName()+"\t" + s.getsAge()+"\t" + s.getcName());
        }

        //4、定义方法完成按照学号搜索功能
        Scanner sc = new Scanner(System.in);
        while (true){
            System.out.println("请您输入学号，查询学生");
            String sNumber= sc.next();
            //5、调用方法查询
            Student s = getStudentById(students,sNumber);
            //6、判断s中是否存在学生对象地址
            if (s == null){
                System.out.println("查无此人");
            }else {
                System.out.println("您查询信息如下");
                System.out.println(s.getsNumber()+"\t" + s.getsName()+"\t" + s.getsAge()+"\t" + s.getcName());
            }
        }
    }

    /**
     * 根据学生学号查询学生对象返回
     * @param students  存储的全部学生对象的集合
     * @param sNumber   搜索的学生的学号
     * @return  返回的类型 学生|null
     */
    public static Student getStudentById(ArrayList<Student> students,String sNumber){
        //1、遍历所有学生对象
        for (int i = 0; i < students.size(); i++) {
            Student s = students.get(i);
            //2、询问当前遍历的学生学号，是否是要找的学号
            if (s.getsNumber().equals(sNumber)){
                //这个s代表的学生对象，就是要找的，返回他
                return s;
            }
        }
        //查无此人
        return null;
    }
}
